home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / share / hplip / probe.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2009-10-28  |  7KB  |  188 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. __version__ = '4.1'
  5. __mod__ = 'hp-probe'
  6. __title__ = 'Printer Discovery Utility'
  7. __doc__ = 'Discover HPLIP supported USB, parallel, and network attached printers.'
  8. import sys
  9. import getopt
  10. import operator
  11. import os
  12. from base.g import *
  13. from base import device, utils, tui, module
  14. USAGE = [
  15.     (__doc__, '', 'name', True),
  16.     ('Usage: %s [OPTIONS]' % __mod__, '', 'summary', True),
  17.     utils.USAGE_OPTIONS,
  18.     ('Bus to probe:', '-b<bus> or --bus=<bus>', 'option', False),
  19.     ('', '<bus>: cups, usb\\*, net, bt, fw, par (\\*default) (Note: bt and fw not supported in this release.)', 'option', False),
  20.     ('Set Time to Live (TTL):', '-t<ttl> or --ttl=<ttl> (Default is 4).', 'option', False),
  21.     ('Set timeout:', '-o<timeout in secs.> or --timeout=<timeout is secs.>', 'option', False),
  22.     ('Filter by functionality:', '-e<filter list> or --filter=<filter list>', 'option', False),
  23.     ('', '<filter list>: comma separated list of one or more of: scan, pcard, fax, copy, or none\\*. (\\*none is the default)', 'option', False),
  24.     ('Search:', '-s<search re> or --search=<search re>', 'option', False),
  25.     ('', '<search re> must be a valid regular expression (not case sensitive)', 'option', False),
  26.     ('Network discovery method:', "-m<method> or --method=<method>: <method> is 'slp'* or 'mdns'.", 'option', False),
  27.     utils.USAGE_LOGGING1,
  28.     utils.USAGE_LOGGING2,
  29.     utils.USAGE_LOGGING3,
  30.     utils.USAGE_HELP,
  31.     utils.USAGE_SPACE,
  32.     utils.USAGE_EXAMPLES,
  33.     ('Find all devices on the network:', 'hp-probe -bnet', 'example', False),
  34.     ('Find all devices on USB that support scanning:', 'hp-probe -busb -escan', 'example', False),
  35.     ("Find all networked devices that contain the name 'lnx' and that support photo cards or scanning:", 'hp-probe -bnet -slnx -escan,pcard', 'example', False),
  36.     ('Find all devices that have queues installed in CUPS:', 'hp-probe -bcups', 'example', False),
  37.     ('Find all devices on the USB bus:', 'hp-probe', 'example', False)]
  38.  
  39. try:
  40.     mod = module.Module(__mod__, __title__, __version__, __doc__, USAGE, (INTERACTIVE_MODE,))
  41.     (opts, device_uri, printer_name, mode, ui_toolkit, loc) = mod.parseStdOpts('b:t:o:e:s:m:', [
  42.         'ttl=',
  43.         'filter=',
  44.         'search=',
  45.         'find=',
  46.         'method=',
  47.         'time-out=',
  48.         'timeout=',
  49.         'bus='], handle_device_printer = False)
  50.     bus = None
  51.     timeout = 10
  52.     ttl = 4
  53.     filter = []
  54.     search = ''
  55.     method = 'slp'
  56.     for o, a in opts:
  57.         if o in ('-b', '--bus'):
  58.             
  59.             try:
  60.                 bus = [ x.lower().strip() for x in a.split(',') ]
  61.             except TypeError:
  62.                 bus = [
  63.                     'usb']
  64.  
  65.             if not device.validateBusList(bus):
  66.                 mod.usage(error_msg = [
  67.                     'Invalid bus name'])
  68.             
  69.         device.validateBusList(bus)
  70.         if o in ('-m', '--method'):
  71.             method = a.lower().strip()
  72.             if method not in ('slp', 'mdns', 'bonjour'):
  73.                 mod.usage(error_msg = [
  74.                     "Invalid network search protocol name. Must be 'slp' or 'mdns'."])
  75.             else:
  76.                 bus = [
  77.                     'net']
  78.         method not in ('slp', 'mdns', 'bonjour')
  79.         if o in ('-t', '--ttl'):
  80.             
  81.             try:
  82.                 ttl = int(a)
  83.             except ValueError:
  84.                 ttl = 4
  85.                 log.note('TTL value error. TTL set to default of 4 hops.')
  86.             except:
  87.                 None<EXCEPTION MATCH>ValueError
  88.             
  89.  
  90.         None<EXCEPTION MATCH>ValueError
  91.         if o in ('-o', '--timeout', '--time-out'):
  92.             
  93.             try:
  94.                 timeout = int(a)
  95.                 if timeout > 45:
  96.                     log.note('Timeout > 45secs. Setting to 45secs.')
  97.                     timeout = 45
  98.             except ValueError:
  99.                 timeout = 5
  100.                 log.note('Timeout value error. Timeout set to default of 5secs.')
  101.  
  102.             if timeout < 0:
  103.                 mod.usage(error_msg = [
  104.                     'You must specify a positive timeout in seconds.'])
  105.             
  106.         timeout < 0
  107.         if o in ('-e', '--filter'):
  108.             filter = [ x.strip().lower() for x in a.split(',') ]
  109.             if not device.validateFilterList(filter):
  110.                 mod.usage(error_msg = [
  111.                     'Invalid term in filter'])
  112.             
  113.         device.validateFilterList(filter)
  114.         if o in ('-s', '--search', '--find'):
  115.             search = a.lower().strip()
  116.             continue
  117.         []
  118.     
  119.     tui.header('DEVICE DISCOVERY')
  120.     for b in bus:
  121.         if b == 'net':
  122.             log.info(log.bold('Probing network for printers. Please wait, this will take approx. %d seconds...\n' % timeout))
  123.         
  124.         FILTER_MAP = {
  125.             'print': None,
  126.             'none': None,
  127.             'scan': 'scan-type',
  128.             'copy': 'copy-type',
  129.             'pcard': 'pcard-type',
  130.             'fax': 'fax-type' }
  131.         filter_dict = { }
  132.         for f in filter:
  133.             if f in FILTER_MAP:
  134.                 filter_dict[FILTER_MAP[f]] = (operator.gt, 0)
  135.                 continue
  136.             filter_dict[f] = (operator.gt, 0)
  137.         
  138.         log.debug(filter_dict)
  139.         devices = device.probeDevices([
  140.             b], timeout, ttl, filter_dict, search, method)
  141.         cleanup_spinner()
  142.         (max_c1, max_c2, max_c3, max_c4) = (0, 0, 0, 0)
  143.         if devices:
  144.             for d in devices:
  145.                 max_c1 = max(len(d), max_c1)
  146.                 max_c3 = max(len(devices[d][0]), max_c3)
  147.                 max_c4 = max(len(devices[d][2]), max_c4)
  148.             
  149.             if b == 'net':
  150.                 formatter = utils.TextFormatter(({
  151.                     'width': max_c1,
  152.                     'margin': 2 }, {
  153.                     'width': max_c3,
  154.                     'margin': 2 }, {
  155.                     'width': max_c4,
  156.                     'margin': 2 }))
  157.                 log.info(formatter.compose(('Device URI', 'Model', 'Name')))
  158.                 log.info(formatter.compose(('-' * max_c1, '-' * max_c3, '-' * max_c4)))
  159.                 for d in devices:
  160.                     log.info(formatter.compose((d, devices[d][0], devices[d][2])))
  161.                 
  162.             elif b in ('usb', 'par', 'cups'):
  163.                 formatter = utils.TextFormatter(({
  164.                     'width': max_c1,
  165.                     'margin': 2 }, {
  166.                     'width': max_c3,
  167.                     'margin': 2 }))
  168.                 log.info(formatter.compose(('Device URI', 'Model')))
  169.                 log.info(formatter.compose(('-' * max_c1, '-' * max_c3)))
  170.                 for d in devices:
  171.                     log.info(formatter.compose((d, devices[d][0])))
  172.                 
  173.             else:
  174.                 log.error('Invalid bus: %s' % b)
  175.             log.info("\nFound %d printer(s) on the '%s' bus.\n" % (len(devices), b))
  176.             continue
  177.         log.warn("No devices found on the '%s' bus. If this isn't the result you are expecting," % b)
  178.         if b == 'net':
  179.             log.warn('check your network connections and make sure your internet')
  180.             log.warn('firewall software is disabled.')
  181.             continue
  182.         log.warn('check to make sure your devices are properly connected and powered on.')
  183. except KeyboardInterrupt:
  184.     log.error('User exit')
  185.  
  186. log.info('')
  187. log.info('Done.')
  188.